﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProgCompte.model;

namespace WindowsFormsApplication1.view
{
    public partial class CompteView : Form
    {
        Compte compte;

        public CompteView()
        {
            InitializeComponent();
            compte = new Compte();
        }

        // enregistrement d'une opération
        private void label1_Click(object sender, EventArgs e)
        {
            // enregistrement des différentes données
            if (this.textBoxLibelle.Text != ""
                && this.comboBoxCategorie.SelectedItem != null
                && this.comboBoxDebit.SelectedItem != null
                && this.maskedTextBoxMontant.Text != "")
            {
                // ajout des données dans la dataGridView
                Double montant = Double.Parse(this.maskedTextBoxMontant.Text);
                // object obj = new object[] { this.dateTimePicker1.ToString(), this.textBoxLibelle, this.textBoxCategorie, this.maskedTextBoxMontant };
                dataGridView1.Rows.Add(
                    this.dateTimePicker1.Value.ToShortDateString(), 
                    this.textBoxLibelle.Text, 
                    this.comboBoxCategorie.SelectedItem, 
                    montant, 
                    this.comboBoxDebit.SelectedItem);

                compte.addLigneCompte(
                    this.dateTimePicker1.Value,
                    this.textBoxLibelle.Text,
                    this.comboBoxCategorie.SelectedItem.ToString(),
                    montant,
                    this.comboBoxDebit.SelectedItem.ToString()
                    );
              
                // messagebox succès enregistrement
                MessageBox.Show("Votre opération a bien été enregistré !");
            }
            else
            {
                // messagebox erreur quand des champs sont manquants
                MessageBox.Show("Erreur des champs sont manquants !");
            }
            Solde.Text = compte.CalcSolde().ToString() + " €";
            
        }

        // action de suppression d'une ligne
        private void button2_Click(object sender, EventArgs e)
        {
            // messagebox confirmation de suppression
            if (MessageBox.Show("Les opérations supprimées seront perdues !"+dataGridView1.CurrentRow.Index,
                                "Confirmation de suppression",
                MessageBoxButtons.OKCancel,
                MessageBoxIcon.Warning) == DialogResult.Cancel)
            {
                return;
            }
            else
            {
                // éxécution de la suppression
                dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
                compte.delLigneCompte(dataGridView1.CurrentRow.Index+1);
           
               
            }
            // calcul solde onglet consulation
            Solde.Text = compte.CalcSolde().ToString()+ " €";
        }

        private void comboBoxDebit_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        // éxécution du solde par date
        private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
        {
            SoldeDate.Text = compte.CalcSoldeDate(dateTimePicker2.Value).ToString() + " €";
        }

        // éxécution du solde par catégorie
        private void comboBoxCate_SelectedIndexChanged(object sender, EventArgs e)
        {
            SoldeCategorie.Text = compte.CalcSoldeCategorie(comboBoxCate.SelectedItem.ToString()).ToString() + " €"; 
        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {   
                    myStream.Close();
                }
            }
            
        }
    }
}